package it.tukano.treditor.engine.scene;

import java.io.Serializable;
import javax.management.MBeanServerInvocationHandler;

/**
 * Element of the scene
 * @author pgi
 */
public interface SceneElement extends Serializable {
            
    /**
     * Returns the parent of this element
     * @return the parent of this element
     */
    SceneElement getParent();
    
    /**
     * Sets the parent of this node.
     * @param newParent the new parent
     * @return the new scene element instance with the same data as this but
     * modified parent
     */
    void setParent(SceneElement newParent);
    
    /**
     * Returns the type of this element
     * @return the type of this element
     */
    Type getType();
    
    /**
     * Type token for scene element
     */
    enum Type {
        
        /**
         * The element is a node
         */
        NODE,
        
        /**
         * The element is a geometry
         */
        MODEL,
        
        /**
         * A directional light element
         */
        DIRECTIONAL_LIGHT,
        
        /**
         * A mesh3d element
         */
        MESH,
    }
}
